package br.edu.faculdadeprojecao.modelo;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import br.edu.faculdadeprojecao.enuns.Dia;
import br.edu.faculdadeprojecao.enuns.Horario;
import br.edu.faculdadeprojecao.enuns.Turno;

@Entity
@Table(uniqueConstraints=@UniqueConstraint(columnNames={"dia","turno","horario"}))
public class Disponibilidade implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id @GeneratedValue
	private Integer Id;		
	@Enumerated(EnumType.STRING)
	private Dia dia;	
	@Enumerated(EnumType.STRING)
	private Turno turno;	
	@Enumerated
	private Horario horario;
	@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "disponibilidade")
	private List<Aula> aulas;
	private boolean ativo;
	
	//Metodos modificadores
	public List<Aula> getAulas() {
		return aulas;
	}
	public void setAulas(List<Aula> aulas) {
		this.aulas = aulas;
	}
	
	public Horario getHorario() {
		return horario;
	}
	public void setHorario(Horario horario) {
		this.horario = horario;
	}
	public Dia getDia() {
		return dia;
	}
	public void setDia(Dia dia) {
		this.dia = dia;
	}
	public Turno getTurno() {
		return turno;
	}
	public void setTurno(Turno turno) {
		this.turno = turno;
	}
	public Integer getId() {
		return Id;
	}
	public void setId(Integer id) {
		Id = id;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	public boolean isAtivo() {
		return ativo;
	}
	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}
}
